The present disclosure relates generally to load-balancing in a computer network.
In computer networks, packets of data are sent from a source to a destination via a network of elements including links and nodes according to various routing protocols. Each incoming packet at a node, such as a router, is sent to an output path, with the choice of output path made based on information at the router. Data traffic is generally forwarded along a single path from a forwarding node to a receiving node based on an optimum (e.g., best or shortest) route. However, there are certain cases where two or more best paths (e.g., equal cost paths) are available. In these instances, the forwarding node will attempt to implement load-balancing, in which the traffic load is shared equally between the paths.
In conventional load-balancing implementations, a hash algorithm is used to load-balance traffic evenly among output interfaces. However, due to the presence of large volume flows along with low volume flows, conventional implementations may result in a lack of uniformity in the distribution of bandwidth between interfaces and cause congestion at one or more of the interfaces.